package com.alibaba.citrus.ots.sales.plan.repository;

import com.alibaba.citrus.ots.sales.plan.repository.request.OrganizationListQueryRequest;
import com.alibaba.citrus.ots.sales.plan.repository.response.EmployeeRoleResponse;
import com.epoch.app.otsplatformenhance.sdo.EmployeeSDO;
import com.epoch.app.otsplatformenhance.sdo.OrganizationSDO;

import java.util.List;

public interface PlatformEnhanceRepository {
    /**
     * 根据组织类型，查询所属组织下所有客户
     *
     * @param bizType
     * @return
     */
    List<String> queryCustomerByBizType(String bizType);

    /**
     * 根据组织ID,查询所属组织下属组织
     *
     * @param bizType
     * @param bizId
     * @param type
     * @return
     */
    List<OrganizationSDO> queryOrganizationByBizId(String bizType, String bizId, String type);

    /**
     * 根据ID,批量查询组织信息
     *
     * @param ids
     * @return
     */
    List<OrganizationSDO> queryOrganizationByIds(List<String> ids);

    /**
     * 向上查询某个组织到指定的节点
     * @param request
     * @return
     */
    List<OrganizationSDO> getTopOrganizationList(OrganizationListQueryRequest request);

    /**
     * 获取当前组织底下的员工
     * @param organizationId
     * @param status
     * @return
     */
    List<EmployeeSDO> getEmployeeList(String organizationId, Integer status);

    /**
     * 根据id获取用户所有角色
     * @param employeeId
     * @param status
     * @return
     */
    List<EmployeeRoleResponse> getEmployeeRoleListById(String employeeId, Integer status);

    /**
     * 批量获取员工信息
     * @param employeeIdList
     * @return
     */
    List<EmployeeSDO> getEmployeeList(List<String> employeeIdList);

    /**
     * 向下查询某个组织的指定层级组织
     * @param request
     * @return
     */
    List<OrganizationSDO> getDownOrganizationList(OrganizationListQueryRequest request);
}
